package audio

import (
	"encoding/json"
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"io/ioutil"
	"log"
	"moko/manifest/config"
	"time"
)

type UserAudios struct {
	ID        int64     `gorm:"column:id;primary_key;AUTO_INCREMENT"`
	UserID    uint      `gorm:"column:user_id;NOT NULL"`    // 用户ID
	ClientID  uint      `gorm:"column:client_id;NOT NULL"`  // 连接ID
	RequestID uint      `gorm:"column:request_id;NOT NULL"` // 请求次ID
	Report    string    `gorm:"column:report;NOT NULL"`     // oss存储地址
	Replayed  int       `gorm:"column:replayed"`            // 是否已回复
	CreatedAt time.Time `gorm:"column:created_at;NOT NULL"` // 创建时间
	UpdatedAt time.Time `gorm:"column:updated_at"`          // 更新时间
}

// CreateRecord 创建用户语音聊天记录
func CreateRecord(Data UserAudios) int64 {

	data, err := ioutil.ReadFile("manifest/config/database_mysql.json")
	if err != nil {
		log.Printf("读取配置文件失败: %v", err.Error())
		return 0
	}
	var cfg config.DatabaseConfig
	err = json.Unmarshal(data, &cfg)
	if err != nil {
		log.Printf("解析配置文件失败: %v", err.Error())
		return 0
	}

	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True", cfg.User, cfg.Password, cfg.Host, cfg.Port, cfg.Database)
	// 连接数据库
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		panic(err)
	}

	// 自动迁移表结构
	err = db.AutoMigrate(&UserAudios{})
	if err != nil {
		panic(err)
	}

	// 插入数据到数据库
	result := db.Create(&Data)
	if result.Error != nil {
		panic(result.Error)
	}

	return Data.ID
}
